from app import db
from datetime import datetime

class FoodCategory(db.Model):
    __tablename__ = 'food_categories'  # 指定表名

    # 定义表的字段
    category_code = db.Column(db.Integer, primary_key=True, autoincrement=True)  # 类别编码，主键
    category_name = db.Column(db.String(255), nullable=False)  # 类别名称
    description = db.Column(db.Text)  # 类别描述
    created_at = db.Column(db.DateTime, default=datetime.utcnow)  # 创建时间，默认当前时间
    parent_id = db.Column(db.Integer)  # 父类别ID
    thumbnail = db.Column(db.String(255))  # 分类图片（假设字段）
    # parent_id = db.Column(db.Integer, db.ForeignKey('food_categories.category_code'))  # 父类别编码

    # parent_category = db.relationship('FoodCategory', remote_side=[category_code])  # 反向关系

    @property
    def parent_id(self):
        """计算 parent_id：如果是三位数及以上，取前两位；否则，parent_id = category_code"""
        str_code = str(self.category_code)
        if len(str_code) >= 3:
            return int(str_code[:2])  # 取前两位
        return self.category_code  # 如果是两位数，parent_id = category_code

    def to_dict(self):
        """将类别转换为字典"""
        return {
            'category_code': self.category_code,
            'category_name': self.category_name,
            'description': self.description,
            'thumbnail': '',  # 可以根据需要添加图片链接或占位符
            'parent_id': self.parent_id,  # 包括计算出的parent_id
            'children': []  # 用于存放子类别
        }


    def __repr__(self):
        return f'<IngredientCategory {self.category_name}>'
